﻿#pragma once
#define  _CRT_SECURE_NO_WARNINGS 1
# include<stdio.h>
# include<stdlib.h>
# include<assert.h>
# include<string.h>
# include"Contact.h"

// 节点的结构体定义
typedef peoInfo SLTDataType;
typedef struct ListNode
{
	SLTDataType data;
	struct ListNode* next;
}ListNode;

// 节点的申请
ListNode* SLTBuyNode(SLTDataType x);

// 链表的打印
void SLTPrint(ListNode* phead);


//头部插⼊删除/尾部插⼊删除
void SLTPushBack(ListNode** pphead, SLTDataType x);
void SLTPushFront(ListNode** pphead, SLTDataType x);
void SLTPopBack(ListNode** pphead);
void SLTPopFront(ListNode** pphead);

//查找
ListNode* SLTFind(ListNode* phead, SLTDataType x);

//在指定位置之前插入数据
void SLTInsert(ListNode** pphead, ListNode* pos, SLTDataType x);

//在指定位置之后插入数据
void SLTInsertAfter(ListNode* pos, SLTDataType x); // 不需要改变第一个节点的位置 无需传入第一个节点的指针

//删除pos节点
void SLTErase(ListNode** pphead, ListNode* pos);

//删除pos之后的节点
void SLTEraseAfter(ListNode* pos); // 不需要改变第一个节点的位置 无需传入**pphead

//销毁链表
void SListDesTroy(ListNode** pphead);